/**
 * 空间用户关联相关类型定义
 */

import type { SpaceVO } from './space'
import type { UserVO } from './user'

// 空间用户VO
export interface SpaceUserVO {
  id: string // 空间用户表id
  spaceId: string // 空间 id
  userId: string // 用户 id
  spaceRole: string // 用户在该空间的角色: viewer/editor/admin
  createTime: string // 创建时间
  updateTime: string // 更新时间
  userVO?: UserVO // 用户信息
  spaceVO?: SpaceVO // 空间信息
}

// 空间用户实体
export interface SpaceUser {
  id: string // id
  spaceId: string // 空间 id
  userId: string // 用户 id
  spaceRole: string // 用户在该空间的角色: viewer/editor/admin
  createTime: string // 创建时间
  updateTime: string // 更新时间
}

// 添加空间用户请求
export interface SpaceUserAddRequest {
  spaceId: string // 空间 ID
  userId: string // 用户 ID
  spaceRole: string // 空间角色: viewer/editor/admin
}

// 编辑空间用户请求
export interface SpaceUserEditRequest {
  id: string // space_user表id
  spaceRole: string // 空间角色: viewer/editor/admin
}

// 空间用户查询请求
export interface SpaceUserQueryRequest {
  id?: string // space_user表id
  spaceId?: string // 空间 id
  userId?: string // 用户 id
  spaceRole?: string // 空间角色: viewer/editor/admin
}

// 删除请求
export interface DeleteRequest {
  id: string
}

// 空间角色选项
export const SPACE_ROLE_OPTIONS = [
  { value: 'viewer', label: '查看者', color: 'default', description: '只能查看空间内容' },
  { value: 'editor', label: '编辑者', color: 'processing', description: '可以编辑和上传图片' },
  { value: 'admin', label: '管理员', color: 'success', description: '可以管理空间成员' },
] as const

// 获取空间角色名称
export const getSpaceRoleText = (role: string): string => {
  const option = SPACE_ROLE_OPTIONS.find((item) => item.value === role)
  return option?.label || '未知'
}

// 获取空间角色颜色
export const getSpaceRoleColor = (role: string): string => {
  const option = SPACE_ROLE_OPTIONS.find((item) => item.value === role)
  return option?.color || 'default'
}

// 获取空间角色描述
export const getSpaceRoleDescription = (role: string): string => {
  const option = SPACE_ROLE_OPTIONS.find((item) => item.value === role)
  return option?.description || ''
}
